package ejb.managerbeans;

import java.util.List;

import javax.ejb.Local;

import ejb.dto.ProdottoBaseDTO;
import ejb.dto.UserDTO;

@Local
public interface ProdottoManagerBeanLocal {

	/**
	 * lista di tutti i prodotti base
	 * 
	 * @return
	 */
	List<ProdottoBaseDTO> getAllPbDTO();

	/**
	 * funzione per salvare un pacchetto base
	 * 
	 * @param pb
	 * @param sottoPacchetto
	 *            object generico che viene convertito nel corretto prodotto
	 *            base
	 */
	void save(ProdottoBaseDTO pb, Object sottoPacchetto);

	/**
	 * funzione per rimuovere un prodotto base
	 * 
	 * @param id
	 */
	void remove(int id);

	/**
	 * funzione per aggiornare un prodotto base
	 * 
	 * @param pb
	 * @param sottoPacchetto
	 * @see save
	 */
	void update(ProdottoBaseDTO pb, Object sottoPacchetto);

	/**
	 * funzione che restituisce un oggetto generico rappresentante un dto del
	 * prodotto base
	 * 
	 * @param typeDTO
	 *            tipo di dto da restituire
	 * @param id
	 *            id del prodotto base
	 * @return
	 */
	Object dtoById(String typeDTO, int id);

	/**
	 * restituisce il prodotto base DTO con id idPB
	 * 
	 * @param idPB
	 * @return
	 */
	ProdottoBaseDTO getPBDTOByID(int idPB);

	/**
	 * funzione per salvare un acquisto (transazione: prodottobase - utente)
	 * 
	 * @param pb
	 *            : il pb acquistato
	 * @param user
	 *            : l'utente che acquista
	 */
	void boughtBasicProduct(ProdottoBaseDTO pb, UserDTO user);

}
